/* 创建线程 */
#include <iostream>
#include <unistd.h>
#include <pthread.h>
#include <sys/types.h>

using namespace std;

void * threadFunc(void * arg)
{
    /* 线程分离 */
    pthread_detach(pthread_self());

    int cnt = 20;
    while(cnt--)
    {
        cout << "i am new thread" << endl;
        sleep(1);
    }

    /* 线程退出 */
    pthread_exit(NULL);
}

int main()
{
    #if 0
    /* 进程号 */
    pid_t pid = getpid();
    cout << "pid:" << pid << endl;

    /* 线程号 */
    pthread_t tid = pthread_self();
    cout << "tid:" << tid << endl;
    #endif


    /* 创建线程 */
    pthread_t tid;      /* 子线程 */
    int ret = pthread_create(&tid, NULL, threadFunc, NULL);
    if(ret != 0)
    {
        perror("thread create error:");
        exit(-1);
    }

    /* 阻塞回收线程资源 */
    pthread_join(tid, NULL);

    

    /* 主进程 */
    int cnt = 150;
    while(cnt--)
    {
        cout << "i am main process" << endl;
        sleep(2);
    }

    return 0;
}